﻿using System;
using System.Text;

namespace KTX.Data
{
  public partial  class HopDong : System.ComponentModel.IDataErrorInfo
    {
      public decimal ThanhTien
      {
          get
          {
              return (decimal)((float)(this.SoThang * this.DonGiaThang) * ((float)this.GiamGia / 100F));
          }
        }
      partial void OnMaSVChanged()
      {
          if (this.SinhVien!=null)
          {
              this.GiamGia = this.SinhVien.DoiTuong.GiamGia;
          }
      }

      partial void OnMaPhongChanged()
      {
          if (this.Phong!=null)
          {
              this.DonGiaThang = this.Phong.DonGiaThang;
          }
      }
      public DateTime NgayKetThucHD
      {
          get
          {
              return this.NgayBD.Value.AddMonths(this.SoThang);
          }
      }

        public string Error
        {
            get
            {
                if (this.EntityState == System.Data.EntityState.Added || this.EntityState == System.Data.EntityState.Modified)
                {
                    StringBuilder sb = new StringBuilder();

                    if (!String.IsNullOrWhiteSpace(this["MaSV"]))
                        sb.AppendLine(this["MaSV"]);

                    if (!String.IsNullOrWhiteSpace(this["MaPhong"]))
                        sb.AppendLine(this["MaPhong"]);

                    if (!String.IsNullOrWhiteSpace(this["SoThang"]))
                        sb.AppendLine(this["SoThang"]);

                    if (!String.IsNullOrWhiteSpace(this["DonGiaThang"]))
                        sb.AppendLine(this["DonGiaThang"]);

                    if (!String.IsNullOrWhiteSpace(this["GiamGia"]))
                        sb.AppendLine(this["GiamGia"]);

                    if (!String.IsNullOrWhiteSpace(this["NamHoc"]))
                        sb.AppendLine(this["NamHoc"]);

                    if (!String.IsNullOrWhiteSpace(this["ThangGiaHan"]))
                        sb.AppendLine(this["ThangGiaHan"]);

                    if (!String.IsNullOrWhiteSpace(this["SoTienDong"]))
                        sb.AppendLine(this["SoTienDong"]);


                    string errors = sb.ToString();
                    return !String.IsNullOrEmpty(errors) ? errors : String.Empty;
                }
                else
                {
                    return String.Empty;
                }
            }
        }

        public string this[string columnName]
        {
            get
            {
                if (this.EntityState == System.Data.EntityState.Added || this.EntityState == System.Data.EntityState.Modified)
                {
                    switch (columnName)
                    {
                        case "MaSV":
                            return this.SinhVien==null ? "Chưa chọn sinh viên!" : String.Empty;
                        case "MaPhong":
                            return this.Phong==null ? "Chưa chọn phòng!" : String.Empty;
                        case "SoThang":
                            return this.SoThang <0 ? "Số tháng hợp đồng không đúng!" : String.Empty;
                        case "DonGiaThang":
                            return this.DonGiaThang < 0 ? "Đơn giá tháng không đúng!" : String.Empty;
                        case "GiamGia":
                            return ((this.GiamGia < 0) || (this.GiamGia > 100)) ? "Mức giảm giá chưa hợp lệ!" : String.Empty;
                        case "NamHoc":
                            return this.NamHoc < 0 ? "Năm học không đúng!" : String.Empty;
                        case "ThangGiaHan":
                            return this.ThangGiaHan < 0 ? "Tháng gia hạn không đúng!" : String.Empty;
                        case "SoTienDong":
                            return this.SoTienDong < 0 ? "Số tiền đóng không đúng!" : String.Empty;

                        default:
                            return String.Empty;
                    }
                }
                else
                {
                    return String.Empty;
                }
            }
        }
    }
}
